Contents
  1. 1. 题目:

题目:

有一间长方形的房子,地上铺了白色、黑色两种颜色的正方形瓷砖,你站在其中一块黑色
瓷砖上,只能想相邻的黑色瓷砖移动,请写一个程序,计算你总共能够到达多少块黑色的
瓷砖

  • ‘.’是黑色瓷砖
  • ‘#’是白色瓷砖
  • ‘@’起点
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37


#include <cstdio>
#include <cstring>
#define MAXN 31

char mp[MAXN][MAXN];
int m, n;

int dfs(int x, int y)
{

int d = 0;
if(x < 0 || x >= n || y < 0 || y >= m || mp[x][y] == '#')
return 0;
if(mp[x][y] == '.'){
d = 1;
mp[x][y] = '#';
}
return d + dfs(x + 1, y) + dfs(x, y + 1) + dfs(x - 1, y) + dfs(x, y - 1);
}

int main()
{

while(scanf("%d%d", &m, &n) != EOF && m + n){//输入列和行
int ans = 0;
for(int i = 0; i < n; i++)
scanf("%s", mp[i]);
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
if(mp[i][j] == '@')
ans = dfs(i, j);
}
}
printf("%d\n", ans);
}
return 0;
}
Contents
  1. 1. 题目: